package generic;

import java.util.*;

/**
 * @author SWJ
 * @create 2021-06-21 16:21
 * 本类用来测试map接口
 */
public class TestMap {
    public static void main(String[] args) {
/**创建Map对象
 * Map中的数据要符合映射规则，一定要注意同时指定K和M
 * 的数据类型，至于K和M指定社么类型，取决于业务*/
        Map<Integer, String> map = new HashMap<>();
        //常用测试方法
        map.put(9527, "diyi");
        map.put(9528, "dier");
        map.put(9529, "disan");
        map.put(9530, "disi");
        System.out.println(map);

        //{9527=diyi, 9528=dier, 9529=disan, 9530=disi}
        /**1.map中存放的都是无序的数据
         * 2.map中的key数值不可重复
         * 如果重复key数值会被value覆盖*/
        System.out.println(map.containsKey(9527));
        //true 判断map是否包含指定的Key
        System.out.println(map.containsValue("dier"));
        //false判断map是否包括的value
        System.out.println(map.get(9527));
        System.out.println(map.equals("者行孙"));
        //false,判断"者行孙"与map对象是否相等
        System.out.println(map.get(9528));
        //者行孙,根据指定的Key来获取对应的Value
        System.out.println(map.hashCode());
        //102939160,获取哈希码值
        System.out.println(map.isEmpty());
        //false,判断集合是否为空
        System.out.println(map.remove(9528));
        //删除指定的元素
        System.out.println(map.get(9528));
        //null,说明映射关系已被移出
        System.out.println(map.size());
        //2,获取集合中元素的个数
        Collection<String> values = map.values();
        //把map集合中的所有Value收集起来放到Collection中
        System.out.println(values);
        //[白骨精, 黄毛怪]

        /**测试map接口中的迭代的实现
         * 1.遍历map中实现数据，把map中自身没有迭代器，需要set类型
         *进行转化成set集合
         * Set<Key>:把map集合中的所有Key存到set集合中 KeySet()</>*/
        Set<Integer> keySet = map.keySet();
        //遍历集合，获取集合迭代对象
        Iterator<Integer> it = keySet.iterator();
        //循环遍历集合中的所有元素

        while (it.hasNext()){
            Integer key=it.next();
            String Value=map.get(key);
            //通过key对应获取value
            System.out.println(key+Value);


        }

    }
}
